"""
Process(group=None, target, name, args, kwargs)
Process 类的常用方法和属性
    - name 属性：当前进程的别名，默认为 Process-N，N 为从 1 开始递增的整数
    - pid 属性：当前进程的 PID（进程号）
    - run() 如果没有指定 target，启动进程后，会调用父类的 run 方法
    - start() 方法：启动进程活动
    - join([timeout]) 方法：如果可选参数 timeout 是 None （默认值），则该方法将阻塞，直到调用 join() 方法的进程终止。如果 timeout 是一个正数，它最多会阻塞 timeout 秒
    - is_alive() 方法：返回进程是否在活动，或 进程可能仍然在运行，返回 True，否则返回 False
    - terminate() 方法：不管任务是否完成，立即终止
"""

import multiprocessing
import os


def sub_process1(name):
    print(f'子进程pid={os.getpid()}, ppid={os.getppid()}, name={name}')
    print(f'子进程的别名：{multiprocessing.current_process().name}')


def sub_process2(name):
    print(f'子进程pid={os.getpid()}, ppid={os.getppid()}, name={name}')
    print(f'子进程的别名：{multiprocessing.current_process().name}')


if __name__ == "__main__":
    for i in range(1, 4):
        p1 = multiprocessing.Process(target=sub_process1, args=(f'进程1-{i}',))
        p1.start()
        p2 = multiprocessing.Process(target=sub_process2, args=(f'进程2-{i}',))
        p2.start()
        p1.join()
        p2.join()

